#include "engine.h"

namespace HW
{
TVec2 Vec2(flt X, flt Y)
{
	TVec2 v={{{X, Y==MAX_DEC?X:Y}}};
	return v;
};


TVec3 Vec3(flt X, flt Y, flt Z)
{
	TVec3 v={{{X, Y==MAX_DEC?X:Y, Z==MAX_DEC?X:Z}}};
	return v;
};


TVec4 Vec4(flt X, flt Y, flt Z, flt W)
{
	TVec4 v={{{X, Y==MAX_DEC?X:Y, Z==MAX_DEC?X:Z, W==MAX_DEC?X:W}}};
	return v;
};


TVec6 Vec6(flt X0, flt Y0, flt Z0,
           flt X1, flt Y1, flt Z1)
{
	TVec6 v={{{X0, Y0==MAX_DEC?X0:Y0, Z0==MAX_DEC?X0:Z0,
			   X1, Y1==MAX_DEC?X1:Y1, Z1==MAX_DEC?X1:Z1}}};
	return v;
};


TVec9 Vec9(flt A0, flt A1, flt A2,
           flt B0, flt B1, flt B2,
		   flt C0, flt C1, flt C2)
{
	TVec9 v={{{A0, A1==MAX_DEC?A0:A1, A2==MAX_DEC?A0:A2,
			   B0, B1==MAX_DEC?B0:B1, B2==MAX_DEC?B0:B2,
			   C0, C1==MAX_DEC?C0:C1, C2==MAX_DEC?C0:C2}}};
	return v;
};


TVec16 Vec16(flt A0, flt A1, flt A2, flt A3,
			 flt B0, flt B1, flt B2, flt B3,
			 flt C0, flt C1, flt C2, flt C3,
			 flt D0, flt D1, flt D2, flt D3)
{
	TVec16 v={{{A0, A1==MAX_DEC?A0:A1, A2==MAX_DEC?A0:A2, A3==MAX_DEC?A0:A3,
				B0, B1==MAX_DEC?B0:B1, B2==MAX_DEC?B0:B2, B3==MAX_DEC?B0:B3,
				C0, C1==MAX_DEC?C0:C1, C2==MAX_DEC?C0:C2, C3==MAX_DEC?C0:C3,
				D0, D1==MAX_DEC?D0:D1, D2==MAX_DEC?D0:D2, D3==MAX_DEC?D0:D3}}};
	return v;
};
}